@echo off
chcp 65001 >nul
title 一键测试前台服务
color 0A

cls
echo.
echo ████████████████████████████████████████████
echo █                                          █
echo █     前台服务 - 彻底解决后台运行问题     █
echo █                                          █
echo ████████████████████████████████████████████
echo.
echo 🔥 前台服务特点：
echo   ✅ 应用退后台也持续运行
echo   ✅ 系统不会杀死前台服务  
echo   ✅ 锁屏也能持续更新
echo   ✅ 100%% 保证持续运行
echo.
echo ⚠️  会显示通知："模拟定位运行中"
echo.

timeout /t 3 >nul

echo ════════════════════════════════════════════
echo  步骤 1/5：编译应用
echo ════════════════════════════════════════════
echo.

call gradlew assembleDebug --console=plain

if errorlevel 1 (
    echo.
    echo ❌ 编译失败！请检查错误信息
    pause
    exit /b 1
)

echo.
echo ✅ 编译成功
echo.

echo ════════════════════════════════════════════
echo  步骤 2/5：安装应用
echo ════════════════════════════════════════════
echo.

adb install -r app\build\outputs\apk\debug\app-debug.apk

if errorlevel 1 (
    echo.
    echo ❌ 安装失败！请检查手机连接
    pause
    exit /b 1
)

echo.
echo ✅ 安装成功
echo.

echo ════════════════════════════════════════════
echo  步骤 3/5：授予权限
echo ════════════════════════════════════════════
echo.

adb shell appops set com.example.munidingwei android:mock_location allow

echo ✅ Mock Location 权限已授予
echo.

echo ════════════════════════════════════════════
echo  步骤 4/5：启动应用和监控
echo ════════════════════════════════════════════
echo.

echo 启动应用...
adb shell am start -n com.example.munidingwei/.MainActivity

timeout /t 2 >nul

echo.
echo 启动日志监控窗口...
echo.

start "前台服务日志 - 每5秒输出一次" cmd /k "color 0B && echo 📊 前台服务日志监控 && echo ═══════════════════════════════════════ && echo. && adb logcat -c && adb logcat -s LocationForegroundService:D | findstr /C:前台服务"

timeout /t 2 >nul

start "位置更新日志" cmd /k "color 0E && echo 📍 位置更新日志监控 && echo ═══════════════════════════════════════ && echo. && adb logcat -s MockLocationProvider:D"

echo.
echo ✅ 日志监控已启动
echo.

echo ════════════════════════════════════════════
echo  步骤 5/5：开始测试
echo ════════════════════════════════════════════
echo.
echo.
echo ┌────────────────────────────────────────┐
echo │  请按照以下步骤测试：                  │
echo └────────────────────────────────────────┘
echo.
echo  📱 第 1 步：设置模拟位置
echo  ────────────────────────────────
echo  • 在应用中点击地图任意位置
echo  • 等待地址显示
echo  • ✅ 通知栏应出现"模拟定位运行中"
echo.
echo  📊 第 2 步：观察日志
echo  ────────────────────────────────
echo  • 查看"前台服务日志"窗口
echo  • 应该看到：
echo    "前台服务协程已启动"
echo    "🔥 前台服务已持续更新 5 次"
echo.
echo  🏠 第 3 步：退到后台（重点！）
echo  ────────────────────────────────
echo  • 按手机 Home 键
echo  • 或切换到其他应用
echo  • ✅ 日志应该继续输出（每5秒）
echo  • ✅ 通知栏图标仍然存在
echo.

pause

echo.
echo  📱 第 4 步：测试微信
echo  ────────────────────────────────
echo.

adb shell am force-stop com.tencent.mm
timeout /t 2 >nul
echo 正在启动微信...
adb shell am start -n com.tencent.mm/.ui.LauncherUI

echo.
echo ✅ 微信已启动
echo.
echo 请在微信中测试：
echo   • 发送位置
echo   • 共享实时位置
echo   • 朋友圈发位置
echo.
echo 💡 观察：
echo   • 微信应该快速获取到模拟位置
echo   • "前台服务日志"窗口持续输出
echo.

pause

echo.
echo  🗺️  第 5 步：测试百度地图
echo  ────────────────────────────────
echo.

adb shell am force-stop com.baidu.BaiduMap
timeout /t 2 >nul
echo 正在启动百度地图...
adb shell am start -n com.baidu.BaiduMap/com.baidu.baidumaps.WelcomeScreen

echo.
echo ✅ 百度地图已启动
echo.
echo 观察地图是否显示模拟位置
echo.

pause

echo.
echo  🔒 第 6 步：测试锁屏
echo  ────────────────────────────────
echo.
echo 请锁定手机屏幕，等待 30 秒...
echo.
echo （日志应该继续更新）
echo.

timeout /t 30 >nul

echo.
echo 现在解锁手机，查看日志
echo 更新次数应该增加了约 30 次
echo.

pause

echo.
echo ════════════════════════════════════════════
echo  测试结果检查
echo ════════════════════════════════════════════
echo.

echo 查看前台服务状态...
echo.
adb shell dumpsys activity services com.example.munidingwei | findstr "isForeground"

echo.
echo ════════════════════════════════════════════
echo  ✅ 成功标志
echo ════════════════════════════════════════════
echo.
echo 如果测试成功，应该满足：
echo.
echo  ✅ 通知栏有"模拟定位运行中"
echo  ✅ 日志每5秒输出一次
echo  ✅ 应用退后台，日志继续输出
echo  ✅ 锁屏时，日志继续输出
echo  ✅ 微信快速获取模拟位置
echo  ✅ 百度地图显示模拟位置
echo  ✅ 通知显示更新次数增加
echo.
echo ════════════════════════════════════════════
echo  ❌ 如果失败
echo ════════════════════════════════════════════
echo.
echo 可能的问题：
echo.
echo  ❌ 通知栏没有图标
echo     → 检查日志是否有错误
echo     → 确认权限已授予
echo.
echo  ❌ 日志停止输出
echo     → 检查服务是否被用户关闭
echo     → 查看是否有崩溃日志
echo.
echo  ❌ 其他应用获取不到位置
echo     → 停止融合定位服务
echo     → 运行"修复融合定位服务.bat"
echo.
echo ════════════════════════════════════════════
echo.

echo 测试完成！告诉我结果如何？ 🎯
echo.

pause

